dynamic binding
The property of {object-oriented programming} languages where
the code executed to perform a given operation is determined
at run-time from the {class} of the operand(s) (the receiver
of the message). There may be several different classes of
objects which can receive a given message. An expression may
denote an object which may have more than one possible class
and that class can only be determined at run-time. New
classes may be created that can receive a particular message,
without changing (or recompiling) the code which sends the
message. An class may be created that can receive any set of
existing messages.
{C::} implements dynamic binding using "{virtual member
function}s".
One important reason for having dynamic binding is that it
provides a mechanism for selecting between alternatives which
is arguably more robust than explicit selection by
conditionals or {pattern matching}. When a new {subclass} is
added, or an existing subclass changes, the necessary
modifications are localised: you don't have incomplete
conditionals and broken patterns scattered all over the
program.
See {overloading}.